package String;
//字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
// 比如，输入字符串"abcdefg"和数字2，该函数
//将返回左旋转两位得到的结果"cdefgab"。 
//
// 
//
// 示例 1： 
//
// 输入: s = "abcdefg", k = 2
//输出: "cdefgab"
// 
//
// 示例 2： 
//
// 输入: s = "lrloseumgh", k = 6
//输出: "umghlrlose"
// 
//
// 
//
// 限制： 
//
// 
// 1 <= k < s.length <= 10000 
// 
// Related Topics 数学 双指针 字符串 👍 165 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class reverseLeftWords {
    public String reverseLeftWords(String s, int n) {
        /**
         * 三次反转，长度为len
         * 首先反转整体，再反转0-len-n  len-n,len
         * */
        int len = s.length();
        char[] chars = s.toCharArray();
        reverse(chars, 0, len-1);
        reverse(chars, len-n,len-1);
        reverse(chars, 0,len-n-1);
        return new String(chars);
    }
    void reverse(char[] ch, int start,int end){
        while(start<end){
            char c = ch[start];
            ch[start] = ch[end];
            ch[end] = c;
            start++;
            end--;
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)
